package killer.member.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import killer.member.model.MemberVO;
import killer.member.service.MemberService;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class MemberController {
	@Resource(name="memberService")
	private MemberService memberService;
	/**
	 * 회원가입 페이지로 가게 해주는 컨트롤러
	 */
	@RequestMapping("registerMemberPage.killer")
	public String registerMemberPage() throws Exception{
		return "registerMember.member";
	}
	/**
	 * 회원 등록 해주는 컨트롤러
	 */
	@RequestMapping("registerMember.killer")
	public String registerMember(MemberVO paramMvo) throws Exception{
		System.out.println("MemberController 회원등록위해 받은 정보 : "+paramMvo);
		memberService.registerMember(paramMvo);
		return "home";
	}
	/**
	 * 로그인 페이지로 가게 해주는 컨트롤러
	 */
	@RequestMapping("loginPage.killer")
	public String loginPage() throws Exception{
		return "login.member";
	}
	/**
	 * 로그인 관리를 해주는 컨트롤러
	 * 입력한 정보의 회원이 존재하지 않을 경우 loginFail.jsp 로 보내주고
	 * 회원이 존재하면 loginOk.jsp 로 보내준다.
	 */
	@RequestMapping("loginMember.killer")
	public String loginMember(HttpServletRequest request,HttpServletResponse response,MemberVO paramMvo) throws Exception{
		
		MemberVO mvo=memberService.loginMember(paramMvo);
		System.out.println("MemberController의 loginMember에서 mvo:"+mvo);
		String path="";
		if(mvo==null){ //검색실패
			path="login_fail.member";
		}else{ //검색성공
			HttpSession session=request.getSession();
			session.setAttribute("mvo", mvo);
			path="login_ok.member";
		}
		return path;
	}
	/**
	 * 로그아웃 관리를 하는 컨트롤러
	 * 세션이 존재하고 그 안에 회원 정보가 들어 있을 경우에 세션을 없애준다.
	 * 로그아웃을 한 뒤에는 login.jsp 로 보내준다.
	 */
	@RequestMapping("logout.killer")
	public String logout(HttpSession session) throws Exception{
		if(session!=null){
			if(session.getAttribute("mvo")!=null)
				session.invalidate();
		}
		return "home";
	}
	/**
	 * 로그인 후 헤더 부분의 내 정보를 클릭했을 시
	 * 레프트가 바뀌고 메인도 내 정보.jsp 를 뿌려 주게 보내주는 컨트롤러
	 */
	@RequestMapping("myInfoPage.killer")
	public String myInfoPage() throws Exception{		
		return "member/myInfo.member";
	}
	/**
	 * 내 정보 레프트에서 정보수정을 눌렀을 시 
	 * 정보수정하는 페이지로 보내는 컨트롤러
	 */
	@RequestMapping("updateMemberPage.killer")
	public String updateMemberPage() throws Exception{
		return "member/updateMember.member";
	}
	/**
	 * 회원 수정을 담당하는 컨트롤러
	 * 회원 수정 후, 회원 정보 페이지를 뿌려준다.
	 */
	@RequestMapping("updateMember.killer")
	public String updateMember(MemberVO paramMvo,HttpSession session) throws Exception{
		System.out.println("MemberController 회원수정 수정된정보->"+paramMvo);
		memberService.updateMember(paramMvo);
		session.setAttribute("mvo", paramMvo);
		return "member/myInfo.member";
	}
	public ModelAndView checkMemberPassword(MemberVO paramMvo) throws Exception{
		return null;
	}
	
	/**
	 * 내 정보 레프트에서 탈퇴 메뉴를 클릭했을 시
	 * 탈퇴 페이지로 이동시켜주는 컨트롤러
	 */
	public String deleteMemberPage() throws Exception{		
		return "member/deleteMember.member";
	}
	 /**
	  * 탈퇴용 패스워드 체크
	  */	 
	public ModelAndView checkMemberPasswordForWithdraw(MemberVO paramMvo) throws Exception{
		return null;
	}	
	
	@RequestMapping("deleteMember.killer")
	public String deleteMember(String memberId) throws Exception{
		System.out.println("MemberController 탈퇴합니다. 받은id->"+memberId);
		memberService.deleteMember(memberId);
		return "home";
	}
	
	public ModelAndView getIdBySsnAndName(MemberVO paramMvo) throws Exception{
		return null;
	}
	
	public ModelAndView getPasswordByIdAndSsn(MemberVO paramMvo) throws Exception{
		return null;
	}
	
	public ModelAndView getAllMemberList(int nowPage) throws Exception{
		return null;
	}
	
	public ModelAndView isMemberExist(MemberVO paramMvo) throws Exception{
		return null;
	}
	
}

























